焊接新需求接口说明
修订日期 | 修订版本 | 修订内容 | 修订人 |
---|---|---|---|
2025.05.08 | v0.1 | 初始化文档 | 李东阳 |
新增需求: ① 方位角设置;② 中心上升设置;③ 动态调整频率和幅值
方位角
SuperimposedParameters结构体新增属性:
double azimuth; // 摆焊波形方位角,单位rad
定义: 在摆焊平面,增加方位角theta,以图像的第一个周期为例,定义方位角向量,起点是T/4周期处x轴上的点,终点是波峰顶点,方位角是Y轴和方位角向量之间的夹角:

理论取值范围(-π/2,π/2)
中心上升
SuperimposedParameters结构体新增属性:
double ridge_height; // 中心上升高度
定义: 将摆焊波形投影到摆焊坐标系的xy平面,波形和主路径的交点,给交点设置的高度值。在轨迹开头和轨迹结尾不进行中心上升

动态调整频率和幅值
SuperimposedParameters结构体新增属性:
int adjust_cycle_num{0}; // 动态调节频率和幅值时, 指定的过渡段数量
在摆焊过程中实现频率和幅值的实时调整,用户可以设置过渡段的数量。

新增接口
/**
* @brief 设置摆动参数,位置摆主要用于焊接,姿态摆主要用于力控寻孔
* @param sp: 摆动参数,具体参考SuperimposedParameters结构体
* @return: 返回值 < 0, 表示设置失败
*/
ARAL_API_COMMON(1.0) int tpSetWeaveParameters(const SuperimposedParameters& sp) = 0;
/**
* @brief 支持在摆动过程中调整频率和振幅,暂只支持正弦摆
* @param frequency: 摆动参数频率, 范围[0.1, 5], 单位: Hz
* @param amplitude: 两侧摆动幅值, 单位: m
* @return: 返回值 < 0, 表示调整失败
*/
ARAL_API_COMMON(1.0) int tpUpdateWeaveParameters(const double& frequency, const Array2d& amplitude) = 0;
开发实例
std::vector<std::vector<interface::PathPoint>> pathpoints;
std::vector<interface::RLPose> poses;
std::vector<interface::PathProperty> path_propertys;
std::vector<interface::MoveProperty> move_propertys;
interface::MoveProperty mAttr_L;
std::vector<double> maxV,maxA,maxJ;
maxV = {0.01, 2.0};
maxA = {4.0, 16.0};
maxJ = {32.0, 128.0};
mAttr_L = generateMoveProperty(interface::MoveMode::POSITION, 0, maxV, maxA, maxJ);
// step01 设置焊接参数
interface::SuperimposedParameters sp; // 焊接参数
sp.vel = maxV[0]; // 焊接参数vel和焊接轨迹的位置速度一致
sp.frequency = 1;
sp.amplitude = {0.0025, 0.0025};
sp.angle = M_PI / 4;
sp.type = interface::WeaveType::SINE;
sp.azimuth = M_PI / 3;
sp.ridge_height = 0.0005;
sp.hold_distance = {0.005, 0.01};
sp.adjust_cycle_num = 1;
sp.enable = true;
// step02 生成路点
poses = { {0.413127, 0.152011, 0.44038, -3.13922, -0.00236571, 1.57078} };
int N = poses.size();
path_propertys.resize(N);
move_propertys.resize(N);
pathpoint.resize(N);
interface::ToolWorkpiece tw;
for(int i = 0; i < N; i++)
{
path_propertys[i].describe_space = interface::DescribeSpace::CARTESIAN;
path_propertys[i].blend_radius = {0.1, 0.1};
move_propertys[i] = mAttr_L;
pathpoint[i] = generatePathPoint(interface::DescribeSpace::CARTESIAN, i+1, {}, poses[i], tw);
}
// step03 添加摆焊轨迹
ret = robot->tpSetWeaveParameters(sp); // 第一次调用,摆焊开始
int N = pathpoint.size();
for(int i = 0; i < N; i++)
{
ret = robot->tpAddPositionLine(pathpoint[i], path_propertys[i], move_propertys[i]);
CHECK(ret >= 0);
}
sp.enable = false;
ret = robot->tpSetWeaveParameters(sp); // 第二次调用,摆焊结束
//===============================动态调整焊接参数============================================
// 在当前摆焊执行过程中,任意时刻调用tpUpdateWeaveParameters,即可实现频率和幅值的实时调整
robot->tpUpdateWeaveParameters(1, {0.001, 0.001});